package com.ljf.daily.costmanagement.dto.command;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.ljf.common.validation.AddGroup;
import com.ljf.common.validation.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 费用管理配置--新增修改  daily_dat_cost_management_config
 *
 * @author LJF
 * @since 2025-04-03
 */
@Data
@ApiModel("费用管理配置--新增修改")
public class DailyDatCostManagementConfigCommand implements Serializable {

    @JsonProperty("code")
    @ApiModelProperty(value = "编码")
    @Length(message = "编码不能超过6个字符", max = 6)
    @NotNull(message = "编码不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String code;

    @JsonProperty("accountCode")
    @ApiModelProperty(value = "账户编码")
    @Length(message = "账户编码不能超过6个字符", max = 6)
    private String accountCode;

    @JsonProperty("withholdSoftwareCode")
    @ApiModelProperty(value = "预扣软件编码")
    @Length(message = "预扣软件编码不能超过12个字符", max = 12)
    private String withholdSoftwareCode;

    @JsonProperty("restoreSoftwareCode")
    @ApiModelProperty(value = "还原软件编码")
    @Length(message = "还原软件编码不能超过12个字符", max = 12)
    private String restoreSoftwareCode;

    @JsonProperty("differentSoftwareCode")
    @ApiModelProperty(value = "差异软件编码")
    @Length(message = "差异软件编码不能超过12个字符", max = 12)
    private String differentSoftwareCode;

    @JsonProperty("deductionSoftwareCode")
    @ApiModelProperty(value = "扣款软件编码")
    @Length(message = "扣款软件编码不能超过12个字符", max = 12)
    private String deductionSoftwareCode;

    @JsonProperty("differentLevelling")
    @ApiModelProperty(value = "差异调平")
    private Integer differentLevelling;

    @JsonProperty("levellingSoftwareCode")
    @ApiModelProperty(value = "调平软件编码")
    @Length(message = "调平软件编码不能超过12个字符", max = 12)
    private String levellingSoftwareCode;

    @JsonProperty("dailyConsumption")
    @ApiModelProperty(value = "日常消耗")
    private Integer dailyConsumption;

    @JsonProperty("consumeSoftwareCode")
    @ApiModelProperty(value = "消耗软件编码")
    @Length(message = "消耗软件(外)不存在", max = 12)
    private String consumeSoftwareCode;

}
